/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.alanis.dao.impl;

import cl.alanis.dao.Dao;
import cl.alanis.dao.ProductoDao;
import cl.alanis.dto.ProductoDto;
import cl.alanis.exception.ProductoExisteException;
import cl.alanis.exception.ProductoNoExisteException;
import cl.alanis.util.AlanisLog;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
 *
 * @author Pía
 */
public class ProductoDaoImpl extends Dao implements ProductoDao{
    Logger logger=AlanisLog.obtenerLogger(ProductoDaoImpl.class);
    public ProductoDaoImpl(){
        super();
    }
    
    @Override
    public ProductoDto obtenerProducto(ProductoDto producto) throws ProductoNoExisteException,Exception{
        logger.debug("Obteniendo producto:"+producto);
        ProductoDto retornoProducto=new ProductoDto();
        ResultSet rs=null;
        PreparedStatement pstmt=null;
        String select;
        String where = null;
        String consulta;
        String valor = null;
        String from;
        try {
            
                    select="SELECT COD_PROD,"
                                 + "COD_PROV,"
                                 + "PRODUCTO.COD_MARCA,"
                                 + "PRODUCTO.COD_TIPOR,"                                 
                                 + "APLICACION,"
                                 + "FABRICANTE_R,"
                                 + "ORIGEN_REPUESTO,"
                                 + "AGNO_AUTO,"
                                 + "DESCRIPCION_PROD,"
                                 + "VALOR_COMPRA,"
                                 + "VALOR_VENTA, "
                                 + "ACTIVO, "
                                 + "NOMBRE_MARCA,"
                                 + "NOMBRE_TIPOR ";
           from="FROM TIPO_REPUESTO INNER JOIN "
                    + "(MARCA_AUTO INNER JOIN PRODUCTO ON MARCA_AUTO.COD_MARCA = PRODUCTO.COD_MARCA) "
                    + "ON TIPO_REPUESTO.COD_TIPOR = PRODUCTO.COD_TIPOR ";
           if(producto.getCodProducto()!=null){
               where="WHERE COD_PROD=?";
               valor=producto.getCodProducto();
           }
           
           else if(producto.getCodProveedor()!=null){
               where="WHERE COD_PROV=?";
               valor=producto.getCodProveedor();
           }
           
            consulta=select +from+ where;
            logger.debug("Consulta:"+consulta);
            pstmt = conexion.preparedStatement(consulta);
            pstmt.setString(1, valor);
            rs=pstmt.executeQuery();
            if(rs.next()){
                retornoProducto.setCodProducto(rs.getString("COD_PROD"));
                retornoProducto.setCodProveedor(rs.getString("COD_PROV"));
                retornoProducto.setCodMarca(rs.getInt("COD_MARCA"));
                retornoProducto.setCodTipoRepuesto(rs.getInt("COD_TIPOR"));                
                retornoProducto.setAplicacion(rs.getString("APLICACION"));
                retornoProducto.setAgnoAuto(rs.getString("AGNO_AUTO"));
                retornoProducto.setDescripcionProducto(rs.getString("DESCRIPCION_PROD"));
                retornoProducto.setOrigenRepuesto(rs.getString("ORIGEN_REPUESTO"));
                retornoProducto.setFabricante(rs.getString("FABRICANTE_R"));
                retornoProducto.setValorCompra(rs.getInt("VALOR_COMPRA"));
                retornoProducto.setValorVenta(rs.getInt("VALOR_VENTA"));
                retornoProducto.setActivo(rs.getBoolean("ACTIVO"));
                retornoProducto.setMarca(rs.getString("NOMBRE_MARCA"));
                retornoProducto.setTipoRepuesto(rs.getString("NOMBRE_TIPOR"));
                logger.debug("Retorno:"+retornoProducto);
                
            }
            else{
                throw new ProductoNoExisteException("Producto "+producto+" no existe");
            }
            
        } catch (SQLException ex) {            
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }finally{
            rs.close();
            pstmt.close();            
            conexion.close();
        }
        
        return retornoProducto;
    }
    
    @Override
    public List obtenerProductoFiltro(ProductoDto producto) throws Exception{
        logger.debug("Obteniendo producto por filtro:"+producto);
        ProductoDto elemento=new ProductoDto();
        List lista=new ArrayList();
        ResultSet rs=null;
        Statement stmt=null;
        String select="";
        String from="";
        String where="";
        String consulta="";
        String valor="";
        try {
            //Todos, Código Producto, Descripción, Aplicación, Marca Auto, Año Auto, Fabricante, País Origen
            select="SELECT COD_PROD,"
                    + "COD_PROV,"
                 + "PRODUCTO.COD_MARCA,"
                 + "NOMBRE_MARCA, "
                 + "PRODUCTO.COD_TIPOR,"
                 + "NOMBRE_TIPOR,"
                 + "APLICACION,"
                 + "FABRICANTE_R,"
                 + "ORIGEN_REPUESTO,"
                 + "AGNO_AUTO,"
                 + "DESCRIPCION_PROD,"
                 + "VALOR_COMPRA,"
                 + "VALOR_VENTA ";
		 
            from="FROM TIPO_REPUESTO INNER JOIN "
                    + "(MARCA_AUTO INNER JOIN PRODUCTO ON MARCA_AUTO.COD_MARCA = PRODUCTO.COD_MARCA) "
                    + "ON TIPO_REPUESTO.COD_TIPOR = PRODUCTO.COD_TIPOR";
               
            
            if(producto.getCodProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getCodProducto()!=null?producto.getCodProducto():producto.getFiltroGeneral();
                where+=" OR PRODUCTO.COD_PROD='"+valor+"'";
                
            }
            if(producto.getDescripcionProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getDescripcionProducto()!=null?producto.getDescripcionProducto():producto.getFiltroGeneral();
                where+=" OR DESCRIPCION_PROD like '%"+valor+"%'";
                
            }
            if(producto.getAplicacion()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAplicacion()!=null?producto.getAplicacion():producto.getFiltroGeneral();
                where+=" OR APLICACION like '%"+valor+"%'";
                
            }
            if(producto.getMarca()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getMarca()!=null?producto.getMarca():producto.getFiltroGeneral();
                where+=" OR NOMBRE_MARCA like '%"+valor+"%'";
                
            }
            if(producto.getAgnoAuto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAgnoAuto()!=null?producto.getAgnoAuto():producto.getFiltroGeneral();
                where+=" OR AGNO_AUTO='"+valor+"'";
                
            }
            if(producto.getOrigenRepuesto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getOrigenRepuesto()!=null?producto.getOrigenRepuesto():producto.getFiltroGeneral();
                where+=" OR ORIGEN_REPUESTO like '%"+valor+"%'";
                
            }
            if(producto.getFabricante()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getFabricante()!=null?producto.getFabricante():producto.getFiltroGeneral();
                where+=" OR FABRICANTE_R like '%"+valor+"%'";
                
            }
            where=where.substring(4, where.length());
            where=" WHERE "+where;
            consulta=select + from + where;
            stmt = conexion.statement();
            
            
            rs=stmt.executeQuery(consulta);
            while(rs.next()){
                elemento=new ProductoDto();
                elemento.setCodProducto(rs.getString("COD_PROD"));
                elemento.setCodProveedor(rs.getString("COD_PROV"));
                elemento.setCodMarca(rs.getInt("COD_MARCA"));
                elemento.setMarca(rs.getString("NOMBRE_MARCA"));
                elemento.setCodTipoRepuesto(rs.getInt("COD_TIPOR"));
                elemento.setTipoRepuesto(rs.getString("NOMBRE_TIPOR"));                
                elemento.setAplicacion(rs.getString("APLICACION"));
                elemento.setAgnoAuto(rs.getString("AGNO_AUTO"));
                elemento.setDescripcionProducto(rs.getString("DESCRIPCION_PROD"));
                elemento.setOrigenRepuesto(rs.getString("ORIGEN_REPUESTO"));
                elemento.setFabricante(rs.getString("FABRICANTE_R"));
                elemento.setValorCompra(rs.getInt("VALOR_COMPRA"));
                elemento.setValorVenta(rs.getInt("VALOR_VENTA"));
                logger.debug("Retorno:"+elemento);
                lista.add(elemento);
            }
            return lista;
        } catch (SQLException ex) {            
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }finally{
                       
            conexion.close();
        }
        
        
    }
    @Override
    public List obtenerProductoFiltro2(ProductoDto producto) throws Exception{
        logger.debug("Obteniendo producto por filtro:"+producto);
        ProductoDto elemento=new ProductoDto();
        List lista=new ArrayList();
        ResultSet rs=null;
        Statement stmt=null;
        String select="";
        String from="";
        String where="";
        String groupby="";
        String consulta="";
        String valor="";
        try {
            //Todos, Código Producto, Descripción, Aplicación, Marca Auto, Año Auto, Fabricante, País Origen
            select="SELECT STOCK.COD_PROD, "
                    + "Count(PRODUCTO.COD_PROD) AS NUM_STOCK, "
                    + "PRODUCTO.APLICACION, "
                    + "MARCA_AUTO.NOMBRE_MARCA, "
                    + "PRODUCTO.AGNO_AUTO, "
                    + "PRODUCTO.FABRICANTE_R, "
                    + "TIPO_REPUESTO.NOMBRE_TIPOR,"
                    + "PRODUCTO.DESCRIPCION_PROD, "
                    + "PRODUCTO.VALOR_VENTA ";
		 
            from="FROM TIPO_REPUESTO "
                    + "INNER JOIN ((MARCA_AUTO INNER JOIN PRODUCTO ON MARCA_AUTO.COD_MARCA = PRODUCTO.COD_MARCA) "
                    + "INNER JOIN STOCK ON PRODUCTO.COD_PROD = STOCK.COD_PROD) "
                    + "ON TIPO_REPUESTO.COD_TIPOR = PRODUCTO.COD_TIPOR ";
               
            groupby="GROUP BY STOCK.COD_PROD, "
                    + "PRODUCTO.APLICACION, "
                    + "MARCA_AUTO.NOMBRE_MARCA, "
                    + "PRODUCTO.AGNO_AUTO, "
                    + "PRODUCTO.FABRICANTE_R, "
                    + "TIPO_REPUESTO.NOMBRE_TIPOR, "
                    + "PRODUCTO.DESCRIPCION_PROD,"
                    + "PRODUCTO.VALOR_VENTA";
            
            if(producto.getCodProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getCodProducto()!=null?producto.getCodProducto():producto.getFiltroGeneral();
                where+=" OR PRODUCTO.COD_PROD='"+valor+"'";
                
            }
            if(producto.getDescripcionProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getDescripcionProducto()!=null?producto.getDescripcionProducto():producto.getFiltroGeneral();
                where+=" OR DESCRIPCION_PROD like '%"+valor+"%'";
                
            }
            if(producto.getAplicacion()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAplicacion()!=null?producto.getAplicacion():producto.getFiltroGeneral();
                where+=" OR APLICACION like '%"+valor+"%'";
                
            }
            if(producto.getMarca()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getMarca()!=null?producto.getMarca():producto.getFiltroGeneral();
                where+=" OR NOMBRE_MARCA like '%"+valor+"%'";
                
            }
            if(producto.getAgnoAuto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAgnoAuto()!=null?producto.getAgnoAuto():producto.getFiltroGeneral();
                where+=" OR AGNO_AUTO='"+valor+"'";
                
            }
            if(producto.getOrigenRepuesto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getOrigenRepuesto()!=null?producto.getOrigenRepuesto():producto.getFiltroGeneral();
                where+=" OR ORIGEN_REPUESTO like '%"+valor+"%'";
                
            }
            if(producto.getFabricante()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getFabricante()!=null?producto.getFabricante():producto.getFiltroGeneral();
                where+=" OR FABRICANTE_R like '%"+valor+"%'";
                
            }
            where=where.substring(4, where.length());
            where=" WHERE ("+where+") AND STOCK.COD_VENTA IS NULL ";
            consulta=select + from + where+groupby;
            stmt = conexion.statement();
            logger.debug(consulta);
            
            rs=stmt.executeQuery(consulta);
            while(rs.next()){
                elemento=new ProductoDto();
                elemento.setCodProducto(rs.getString("COD_PROD"));
                elemento.setMarca(rs.getString("NOMBRE_MARCA"));
                elemento.setTipoRepuesto(rs.getString("NOMBRE_TIPOR"));
                elemento.setAplicacion(rs.getString("APLICACION"));
                elemento.setAgnoAuto(rs.getString("AGNO_AUTO"));
                elemento.setDescripcionProducto(rs.getString("DESCRIPCION_PROD"));
                elemento.setFabricante(rs.getString("FABRICANTE_R"));
                elemento.setValorVenta(rs.getInt("VALOR_VENTA"));
                elemento.setNumStock(rs.getInt("NUM_STOCK"));
                logger.debug("Retorno:"+elemento);
                lista.add(elemento);
            }
            return lista;
        } catch (SQLException ex) {            
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }finally{
                       
            conexion.close();
        }
        
        
    }

    @Override
    public void ingresarProducto(ProductoDto producto) throws Exception {
        logger.debug("Ingresando producto:"+producto);
        boolean sw=false;
        try{
            this.obtenerProducto(producto);
        }catch(ProductoNoExisteException ex){
            logger.debug("El producto que se quiere ingresar ya existe en el sistema");
            sw=true;
        }
        
        String insert="INSERT INTO PRODUCTO(COD_PROD,"
                                         + "COD_PROV,"
                                         + "COD_MARCA,"
                                         + "COD_TIPOR,"
                                         + "APLICACION,"
                                         + "AGNO_AUTO,"
                                         + "DESCRIPCION_PROD,"
                                         + "VALOR_COMPRA,"
                                         + "VALOR_VENTA,"
                                         + "ORIGEN_REPUESTO,"
                                         + "FABRICANTE_R,"
                                         + "ACTIVO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
        
        PreparedStatement pstmt=null;
        if(sw){
            try {
            pstmt = conexion.preparedStatement(insert);
            pstmt.setString(1, producto.getCodProducto());
            pstmt.setString(2, producto.getCodProveedor());
            pstmt.setInt(3,producto.getCodMarca());
            pstmt.setInt(4, producto.getCodTipoRepuesto());
            pstmt.setString(5, producto.getAplicacion());
            pstmt.setString(6,producto.getAgnoAuto());
            pstmt.setString(7,producto.getDescripcionProducto());
            pstmt.setInt(8,producto.getValorCompra());
            pstmt.setInt(9, producto.getValorVenta());
            pstmt.setString(10, producto.getOrigenRepuesto());
            pstmt.setString(11, producto.getFabricante());
            pstmt.setBoolean(12, producto.getActivo());
            
            pstmt.executeUpdate();
            } catch (SQLException ex) {
                logger.error("Error:"+ex.getMessage());
                throw new Exception("Error en el sistema");
            }
        }
        else{
            throw new ProductoExisteException("El producto con codigo "+producto.getCodProducto()+" ya existe en el sistema");
        }
        
    }

    @Override
    public void actualizarProducto(ProductoDto producto) throws Exception {
        logger.debug("Actualizando producto="+producto);
        String update="UPDATE PRODUCTO SET COD_PROV=?,"
                                         + "COD_MARCA=?,"
                                         + "COD_TIPOR=?,"
                                         + "APLICACION=?,"
                                         + "AGNO_AUTO=?,"
                                         + "DESCRIPCION_PROD=?,"
                                         + "VALOR_COMPRA=?,"
                                         + "VALOR_VENTA=?,"
                                         + "ORIGEN_REPUESTO=?,"
                                         + "FABRICANTE_R=?,"
                                         + "ACTIVO=? "
                + "WHERE COD_PROD=?";
        PreparedStatement pstmt=null;
        try {
            pstmt=conexion.preparedStatement(update);
            pstmt.setString(1, producto.getCodProveedor());
            pstmt.setInt(2,producto.getCodMarca());
            pstmt.setInt(3, producto.getCodTipoRepuesto());
            pstmt.setString(4, producto.getAplicacion());
            pstmt.setString(5,producto.getAgnoAuto());
            pstmt.setString(6,producto.getDescripcionProducto());
            pstmt.setInt(7,producto.getValorCompra());
            pstmt.setInt(8, producto.getValorVenta());
            pstmt.setString(9, producto.getOrigenRepuesto());
            pstmt.setString(10, producto.getFabricante());
            pstmt.setBoolean(11, producto.getActivo());
            pstmt.setString(12, producto.getCodProducto());
            pstmt.executeUpdate();
        } catch (SQLException ex) {
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Eror en el sistema");
        }
    }

    @Override
    public List obtenerProductoFiltro3(ProductoDto producto) throws Exception{
        logger.debug("Obteniendo producto por filtro:"+producto);
        ProductoDto elemento=new ProductoDto();
        List lista=new ArrayList();
        ResultSet rs=null;
        Statement stmt=null;
        String select="";
        String from="";
        String where="";
        String consulta="";
        String valor="";
        try {
            //Todos, Código Producto, Descripción, Aplicación, Marca Auto, Año Auto, Fabricante, País Origen
            select="SELECT STOCK.COD_STOCK, "
                    + "PRODUCTO.COD_PROD, "
                    + "PRODUCTO.COD_PROV, "
                    + "PRODUCTO.DESCRIPCION_PROD, "
                    + "PRODUCTO.APLICACION, "
                    + "MARCA_AUTO.NOMBRE_MARCA, "
                    + "PRODUCTO.AGNO_AUTO, "
                    + "PRODUCTO.ORIGEN_REPUESTO, "
                    + "PRODUCTO.FABRICANTE_R, "
                    + "TIPO_REPUESTO.NOMBRE_TIPOR, "
                    + "PRODUCTO.VALOR_VENTA ";
		 
            from="FROM TIPO_REPUESTO INNER JOIN (MARCA_AUTO INNER JOIN (PRODUCTO INNER JOIN STOCK ON PRODUCTO.COD_PROD = STOCK.COD_PROD) ON MARCA_AUTO.COD_MARCA = PRODUCTO.COD_MARCA) ON TIPO_REPUESTO.COD_TIPOR = PRODUCTO.COD_TIPOR ";
               
            
            if(producto.getCodProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getCodProducto()!=null?producto.getCodProducto():producto.getFiltroGeneral();
                where+=" OR PRODUCTO.COD_PROD='"+valor+"'";
                
            }
            if(producto.getDescripcionProducto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getDescripcionProducto()!=null?producto.getDescripcionProducto():producto.getFiltroGeneral();
                where+=" OR DESCRIPCION_PROD like '%"+valor+"%'";
                
            }
            if(producto.getAplicacion()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAplicacion()!=null?producto.getAplicacion():producto.getFiltroGeneral();
                where+=" OR APLICACION like '%"+valor+"%'";
                
            }
            if(producto.getMarca()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getMarca()!=null?producto.getMarca():producto.getFiltroGeneral();
                where+=" OR NOMBRE_MARCA like '%"+valor+"%'";
                
            }
            if(producto.getAgnoAuto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getAgnoAuto()!=null?producto.getAgnoAuto():producto.getFiltroGeneral();
                where+=" OR AGNO_AUTO='"+valor+"'";
                
            }
            if(producto.getOrigenRepuesto()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getOrigenRepuesto()!=null?producto.getOrigenRepuesto():producto.getFiltroGeneral();
                where+=" OR ORIGEN_REPUESTO like '%"+valor+"%'";
                
            }
            if(producto.getFabricante()!=null || producto.getFiltroGeneral()!=null){
                valor=producto.getFabricante()!=null?producto.getFabricante():producto.getFiltroGeneral();
                where+=" OR FABRICANTE_R like '%"+valor+"%'";
                
            }
            where=where.substring(4, where.length());
            where=" WHERE ("+where+") AND STOCK.COD_VENTA IS NULL";
            consulta=select + from + where;
            stmt = conexion.statement();
            
            
            rs=stmt.executeQuery(consulta);
            while(rs.next()){
                elemento=new ProductoDto();
                elemento.setCodStock(rs.getInt("COD_STOCK"));
                elemento.setCodProducto(rs.getString("COD_PROD"));                
                elemento.setCodProveedor(rs.getString("COD_PROV"));
                elemento.setMarca(rs.getString("NOMBRE_MARCA"));                
                elemento.setTipoRepuesto(rs.getString("NOMBRE_TIPOR"));                
                elemento.setAplicacion(rs.getString("APLICACION"));
                elemento.setAgnoAuto(rs.getString("AGNO_AUTO"));
                elemento.setDescripcionProducto(rs.getString("DESCRIPCION_PROD"));
                elemento.setOrigenRepuesto(rs.getString("ORIGEN_REPUESTO"));
                elemento.setFabricante(rs.getString("FABRICANTE_R"));
                elemento.setValorVenta(rs.getInt("VALOR_VENTA"));                
                logger.debug("Retorno:"+elemento);
                lista.add(elemento);
            }
            return lista;
        } catch (SQLException ex) {            
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }finally{
                       
            conexion.close();
        }
    }
    public List consultaStockVendido() throws Exception{
        List lista=new ArrayList();
        String consulta="SELECT PRODUCTO.COD_PROD, "
                + "             PRODUCTO.COD_PROV, "
                + "             MARCA_AUTO.NOMBRE_MARCA, "
                + "             PRODUCTO.APLICACION, "
                + "             PRODUCTO.DESCRIPCION_PROD, "
                + "             PRODUCTO.VALOR_COMPRA, "
                + "             PRODUCTO.VALOR_VENTA, "
                + "             ConsultaStock.num_stock, "
                + "             ConultaVendidos.num_stock AS vendidos, "
                + "             (ConsultaStock.num_stock-ConultaVendidos.num_stock) AS DIFERENCIA "
                + "FROM MARCA_AUTO INNER JOIN ((PRODUCTO LEFT JOIN ConultaVendidos ON PRODUCTO.COD_PROD = ConultaVendidos.COD_PROD) INNER JOIN ConsultaStock ON PRODUCTO.COD_PROD = ConsultaStock.COD_PROD) ON MARCA_AUTO.COD_MARCA = PRODUCTO.COD_MARCA";
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        ProductoDto producto;
        logger.debug(consulta);
        try {
            pstmt=conexion.preparedStatement(consulta);
            rs=pstmt.executeQuery();
            while(rs.next()){
                producto=new ProductoDto();
                producto.setCodProducto(rs.getString("COD_PROD"));
                producto.setCodProveedor(rs.getString("COD_PROV"));
                producto.setMarca(rs.getString("NOMBRE_MARCA"));
                producto.setAplicacion(rs.getString("APLICACION"));
                producto.setDescripcionProducto(rs.getString("DESCRIPCION_PROD"));
                producto.setValorCompra(rs.getInt("VALOR_COMPRA"));
                producto.setValorVenta(rs.getInt("VALOR_VENTA"));
                producto.setNumStock(rs.getInt("NUM_STOCK"));
                producto.setRestantes(rs.getInt("DIFERENCIA"));
                
                lista.add(producto);
            }
        } catch (SQLException ex) {
            logger.error("Error:"+ex.getMessage());
            throw new Exception("Error en el sistema");
        }finally{                       
            conexion.close();
        }
        return lista;
    }
}



